package Sort.面试.宁波银行;

import java.util.ArrayList;
import java.util.List;

/**
 * 实现井字棋
 *
 * 给定一个 二维数组(或者 List<List<Integer>>)board，代表当前棋盘，其中元素为1的代表是当前玩家的棋子，
 * 为 0 表示没有棋子，为-1 代表是对方玩家的棋子
 *
 * 测试用例:
 * [ 1,  0,  1]
 * [ 1, -1, -1]
 * [ 1, -1,  0]
 *
 * 返回 : true
 */
public class TicTacToe {

    public static boolean winTicTacToe(List<List<Integer>> board){
        if(board == null || board.size() == 0){
            return false;
        }

        List<Integer> list1 = board.get(0);
        List<Integer> list2 = board.get(1);
        List<Integer> list3 = board.get(2);

        for (int i = 0; i < 3; i++) {
            // 横向
            List<Integer> tempList = board.get(i);
            if(tempList.get(0) + tempList.get(1) + tempList.get(2) == 3){
                return true;
            }
            // 纵向
            if(list1.get(i) + list2.get(i) +list3.get(i) == 3){
                return true;
            }
        }

        //斜线
        if(list1.get(0) + list2.get(1) + list3.get(2) == 3){
            return true;
        }
        if(list1.get(2) + list2.get(1) + list3.get(0) == 3){
            return true;
        }
        return false;
    }


    public static boolean TicTacToe(List<List<Integer>> board){
        if(board == null || board.size() == 0){
            return false;
        }

        List<Integer> List1 = board.get(0);
        List<Integer> List2 = board.get(1);
        List<Integer> List3 = board.get(2);

        List<Integer> tempList;
        for (int i = 0; i < 3; i++) {
            tempList = board.get(i);
            if(tempList.get(0) + tempList.get(1) + tempList.get(2) == 3){
                return true;
            }

            if(List1.get(i) + List2.get(i) + List3.get(i) == 3){
                return true;
            }
        }

        if(List1.get(0) + List2.get(1) + List3.get(2) == 3){
            return true;
        }
        if(List1.get(2) + List2.get(1) + List3.get(0) == 3){
            return true;
        }

        return false;

    }

    public static void main(String[] args) {
        List<List<Integer>> outList = new ArrayList<>();
        List<Integer> list1 = new ArrayList<>();
        list1.add(1);
        list1.add(0);
        list1.add(1);
        List<Integer> list2 = new ArrayList<>();
        list2.add(1);
        list2.add(-1);
        list2.add(-1);
        List<Integer> list3 = new ArrayList<>();
        list3.add(1);
        list3.add(-1);
        list3.add(0);

        outList.add(list1);
        outList.add(list2);
        outList.add(list3);

        System.out.println(TicTacToe(outList));
    }
}
